[INFO] cloning repository https://github.com/agiletec-inc/airis-workspace
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/agiletec-inc/airis-workspace" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fagiletec-inc%2Fairis-workspace", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fagiletec-inc%2Fairis-workspace'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3efb4d0ce711bb0466155cdc53a00b59ce4f69e2
[INFO] testing agiletec-inc/airis-workspace against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fagiletec-inc%2Fairis-workspace" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/agiletec-inc/airis-workspace
[INFO] finished tweaking git repo https://github.com/agiletec-inc/airis-workspace
[INFO] tweaked toml for git repo https://github.com/agiletec-inc/airis-workspace written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/agiletec-inc/airis-workspace on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/agiletec-inc/airis-workspace already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded supports-color v3.0.2
[INFO] [stderr]   Downloaded serde_yaml_ng v0.10.0
[INFO] [stderr]   Downloaded terminal_size v0.4.4
[INFO] [stderr]   Downloaded supports-unicode v3.0.0
[INFO] [stderr]   Downloaded supports-hyperlinks v3.2.0
[INFO] [stderr]   Downloaded clap_complete v4.6.2
[INFO] [stderr]   Downloaded assert_cmd v2.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c01c95077584d90740ef1931c2e0a87f831b8c84a7ede1814bdc8674f7a22173
[INFO] running `Command { std: "docker" "start" "-a" "c01c95077584d90740ef1931c2e0a87f831b8c84a7ede1814bdc8674f7a22173", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c01c95077584d90740ef1931c2e0a87f831b8c84a7ede1814bdc8674f7a22173", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c01c95077584d90740ef1931c2e0a87f831b8c84a7ede1814bdc8674f7a22173", kill_on_drop: false }`
[INFO] [stdout] c01c95077584d90740ef1931c2e0a87f831b8c84a7ede1814bdc8674f7a22173
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8114fe3356714e793e3ffbced4fb193539a95596a181f8536ff3c84e11fb8bb5
[INFO] running `Command { std: "docker" "start" "-a" "8114fe3356714e793e3ffbced4fb193539a95596a181f8536ff3c84e11fb8bb5", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling indexmap v2.13.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rustc-demangle v0.1.27
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling is_ci v1.2.0
[INFO] [stderr]    Compiling unicode-linebreak v0.1.5
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling supports-color v3.0.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling miette-derive v7.6.0
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling supports-unicode v3.0.0
[INFO] [stderr]    Compiling airis-workspace v4.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling addr2line v0.25.1
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling unit-prefix v0.5.2
[INFO] [stderr]    Compiling supports-hyperlinks v3.2.0
[INFO] [stderr]    Compiling indicatif v0.18.4
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling dialoguer v0.12.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling clap_complete v4.6.2
[INFO] [stderr]    Compiling tokio v1.51.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling backtrace-ext v0.2.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling miette v7.6.0
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "8114fe3356714e793e3ffbced4fb193539a95596a181f8536ff3c84e11fb8bb5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8114fe3356714e793e3ffbced4fb193539a95596a181f8536ff3c84e11fb8bb5", kill_on_drop: false }`
[INFO] [stdout] 8114fe3356714e793e3ffbced4fb193539a95596a181f8536ff3c84e11fb8bb5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a34c79905b8dd402e2c6aea90808a4d9ccdc2bc6c53afbcecc6c221d2b3603b3
[INFO] running `Command { std: "docker" "start" "-a" "a34c79905b8dd402e2c6aea90808a4d9ccdc2bc6c53afbcecc6c221d2b3603b3", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling airis-workspace v4.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 19.48s
[INFO] running `Command { std: "docker" "inspect" "a34c79905b8dd402e2c6aea90808a4d9ccdc2bc6c53afbcecc6c221d2b3603b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a34c79905b8dd402e2c6aea90808a4d9ccdc2bc6c53afbcecc6c221d2b3603b3", kill_on_drop: false }`
[INFO] [stdout] a34c79905b8dd402e2c6aea90808a4d9ccdc2bc6c53afbcecc6c221d2b3603b3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] b48c6a7d371e7ffa67a14e66da56246c82f8df9a28990a10e6f84695518d722a
[INFO] running `Command { std: "docker" "start" "-a" "b48c6a7d371e7ffa67a14e66da56246c82f8df9a28990a10e6f84695518d722a", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/airis_workspace-f0d8d5a5b0f95a7f)
[INFO] [stdout] 
[INFO] [stdout] running 262 tests
[INFO] [stdout] test channel::tests::test_parse_channel ... ok
[INFO] [stdout] test commands::bump_version::tests::test_breaking_marker_only_matches_subject ... ok
[INFO] [stdout] test commands::bump_version::tests::test_conventional_commits_detection ... ok
[INFO] [stdout] test commands::bump_version::tests::test_bump_version_string ... ok
[INFO] [stdout] test commands::bump_version::tests::test_scoped_breaking_marker ... ok
[INFO] [stdout] test commands::bump_version::tests::test_strip_commit_comments ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_managed_dirs_includes_all_expected_rules ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_is_legacy_airis_entry ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_remove_legacy_airis_entries_preserves_others ... ok
[INFO] [stdout] test commands::bump_version::tests::test_replace_lock_version_noop_when_package_absent ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_no_infra_constants_in_templates ... ok
[INFO] [stdout] test commands::bump_version::tests::test_replace_lock_version_targets_named_package_only ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_check_plugin_installed_detects_presence ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_managed_dir_skips_unchanged ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_registry_load_save_roundtrip ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_single_file_creates_and_overwrites ... ok
[INFO] [stdout] test commands::clean::tests::test_protected_paths ... ok
[INFO] [stdout] test commands::deps::tests::test_build_dependents_map ... ok
[INFO] [stdout] test commands::clean::tests::project_root_rejected_when_no_marker_present ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_initialize_source_dir ... ok
[INFO] [stdout] test commands::deps::tests::test_check_architecture_violation ... ok
[INFO] [stdout] test commands::deps::tests::test_check_architecture_valid ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_managed_dir_creates_files ... ok
[INFO] [stdout] test commands::deps::tests::test_detect_cycles_no_cycle ... ok
[INFO] [stdout] test commands::deps::tests::test_detect_cycles_with_cycle ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_from_source_orphan_removal ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_managed_dir_deletes_orphans ... ok
[INFO] [stdout] test commands::diff::tests::test_compute_unified_diff_no_changes ... ok
[INFO] [stdout] test commands::diff::tests::test_format_new_file_diff ... ok
[INFO] [stdout] test commands::diff::tests::test_file_status_serialize ... ok
[INFO] [stdout] test commands::clean::tests::project_root_detected_for_each_marker ... ok
[INFO] [stdout] test commands::diff::tests::test_compute_unified_diff_with_changes ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_from_source_preserves_non_airis_files ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_uninstall_preserves_user_content_files ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_nextjs ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_hono ... ok
[INFO] [stdout] test commands::claude_setup::tests::test_sync_from_source_basic ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_node_fallback ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_python ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_unknown ... ok
[INFO] [stdout] test commands::discover::tests::test_extract_package_info_skips_workspace_refs ... ok
[INFO] [stdout] test commands::discover::tests::test_extract_package_info_basic ... ok
[INFO] [stdout] test commands::discover::tests::test_get_package_name ... ok
[INFO] [stdout] test commands::discover::tests::test_discover_from_workspaces_excludes_negated ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_vite ... ok
[INFO] [stdout] test commands::discover::tests::test_detect_framework_rust ... ok
[INFO] [stdout] test commands::discover::tests::test_extract_catalog ... ok
[INFO] [stdout] test commands::discover::tests::test_discover_from_workspaces_nested_products ... ok
[INFO] [stdout] test commands::discover::tests::test_extract_package_info_with_catalog_conversion ... ok
[INFO] [stdout] test commands::docs::tests::handle_existing_file_backup_mode_writes_bak ... ok
[INFO] [stdout] test commands::discover::tests::test_discover_from_workspaces_basic ... ok
[INFO] [stdout] test commands::docs::tests::render_gemini_uses_imports ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_empty_when_all_defaults_with_allowed ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_forbidden_renders_mock_rule ... ok
[INFO] [stdout] test commands::docs::tests::handle_existing_file_force_overwrites_in_warn_mode ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_injected_into_agents_md ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_injected_into_claude_md ... ok
[INFO] [stdout] test commands::clean::tests::default_manifest_provides_canonical_clean_lists ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_renders_coverage_targets ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_injected_into_gemini_md ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_not_in_claude_md_when_all_defaults_allowed ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_renders_forbidden_patterns ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_renders_custom_ai_rules ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_unit_only_renders_mock_rule ... ok
[INFO] [stdout] test commands::doctor::tests::test_artifact_severity_build_outputs_are_warnings ... ok
[INFO] [stdout] test commands::docs::tests::testing_policy_renders_type_enforcement ... ok
[INFO] [stdout] test commands::doctor::tests::test_artifact_severity_dependencies_are_errors ... ok
[INFO] [stdout] test commands::generate::ai_gen::tests::test_update_generated_block_new ... ok
[INFO] [stdout] test commands::doctor::tests::test_issue_severity ... ok
[INFO] [stdout] test commands::generate::ai_gen::tests::test_update_generated_block_existing ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::build_app_service_has_production_fields ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::merge_drops_airis_managed_services_no_longer_generated ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::slug_normalizes_paths_and_dots ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::merge_parses_gpu_resource_reservations ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::merge_preserves_user_services ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::merge_resolves_yaml_merge_keys ... ok
[INFO] [stdout] test commands::generate::compose_gen::tests::merge_replaces_airis_managed_services ... ok
[INFO] [stdout] test commands::docs::tests::sync_generates_configured_vendor_adapters ... ok
[INFO] [stdout] test commands::generate::ai_gen::tests::test_sync_ai_rules_idempotent ... ok
[INFO] [stdout] test commands::generate::tests::test_load_generation_registry ... ok
[INFO] [stdout] test commands::generate::tests::test_load_generation_registry_missing_file ... ok
[INFO] [stdout] test commands::generate::tests::test_save_generation_registry_deduplicates_and_sorts ... ok
[INFO] [stdout] test commands::mcp::tests::handle_manifest_apply_rejects_invalid_toml ... ok
[INFO] [stdout] test commands::mcp::tests::parse_workspace_uri_accepts_relative_paths ... ok
[INFO] [stdout] test commands::manifest_cmd::tests::test_workspace_truth_compose_files ... ok
[INFO] [stdout] test commands::mcp::tests::handle_resources_read_rejects_unadvertised_paths ... ok
[INFO] [stdout] test commands::mcp::tests::parse_workspace_uri_rejects_traversal_and_absolute ... ok
[INFO] [stdout] test commands::migrate::tests::test_plan_always_includes_generate_manifest ... ok
[INFO] [stdout] test commands::migrate::tests::test_generate_manifest_content ... ok
[INFO] [stdout] test commands::generate::tests::test_detect_ts_major_from_catalog_tilde ... ok
[INFO] [stdout] test commands::migrate::tests::test_dry_run_does_not_create_files ... ok
[INFO] [stdout] test commands::migrate::tests::test_plan_does_not_move_root_compose ... ok
[INFO] [stdout] test commands::manifest_cmd::tests::test_workspace_truth_recommended_commands ... ok
[INFO] [stdout] test commands::migrate::tests::test_execute_creates_manifest ... ok
[INFO] [stdout] test commands::generate::tests::test_detect_ts_major_default ... ok
[INFO] [stdout] test commands::generate::tests::test_detect_ts_major_explicit_override ... ok
[INFO] [stdout] test commands::generate::tests::test_detect_ts_major_from_catalog ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_empty_name_rejected ... ok
[INFO] [stdout] test commands::manifest_cmd::tests::test_workspace_truth_serialization ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_get_base_dir ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_invalid_name_rejected ... ok
[INFO] [stdout] test commands::mcp::tests::handle_manifest_apply_rejects_manifest_failing_validation ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_generate_py_lib ... ok
[INFO] [stdout] test commands::policy::tests::test_banned_env_vars_clean_code_passes ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_generate_rust_service ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_generate_py_api ... ok
[INFO] [stdout] test commands::policy::tests::test_banned_env_vars_detects_violation ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_generate_api_project ... ok
[INFO] [stdout] test commands::policy::tests::test_policy_config_default ... ok
[INFO] [stdout] test commands::policy::tests::test_banned_env_vars_skips_allowed_paths ... ok
[INFO] [stdout] test commands::new_cmd::tests::test_generate_lib_project ... ok
[INFO] [stdout] test commands::policy::tests::test_policy_template ... ok
[INFO] [stdout] test commands::policy::tests::test_required_env_missing ... ok
[INFO] [stdout] test commands::policy::tests::test_severity_enum ... ok
[INFO] [stdout] test commands::upgrade::tests::test_detect_target_triple ... ok
[INFO] [stdout] test commands::upgrade::tests::test_version_gt ... ok
[INFO] [stdout] test conventions::tests::test_healthcheck_for_nextjs ... ok
[INFO] [stdout] test conventions::tests::test_healthcheck_none_for_pnpm_stack ... ok
[INFO] [stdout] test conventions::tests::test_hono_defaults ... ok
[INFO] [stdout] test commands::policy::tests::test_mock_pattern_clean_test_passes ... ok
[INFO] [stdout] test conventions::tests::test_name_from_path ... ok
[INFO] [stdout] test commands::policy::tests::test_forbidden_files_check ... ok
[INFO] [stdout] test conventions::tests::test_cloudflare_worker_defaults ... ok
[INFO] [stdout] test commands::policy::tests::test_mock_pattern_detects_violation ... ok
[INFO] [stdout] test conventions::tests::test_nextjs_has_watchpack_polling ... ok
[INFO] [stdout] test conventions::tests::test_nextjs_defaults ... ok
[INFO] [stdout] test conventions::tests::test_node_version_to_es_target ... ok
[INFO] [stdout] test commands::policy::tests::test_mock_pattern_multiple_patterns ... ok
[INFO] [stdout] test conventions::tests::test_node_has_no_polling_env ... ok
[INFO] [stdout] test commands::policy::tests::test_mock_pattern_ignores_non_test_files ... ok
[INFO] [stdout] test conventions::tests::test_python_defaults ... ok
[INFO] [stdout] test conventions::tests::test_vite_has_chokidar_polling ... ok
[INFO] [stdout] test commands::policy::tests::test_type_enforcement_skips_non_db_tests ... ok
[INFO] [stdout] test conventions::tests::test_parse_node_version_from_image ... ok
[INFO] [stdout] test conventions::tests::test_unknown_framework_has_sensible_defaults ... ok
[INFO] [stdout] test dag::tests::test_topo_order ... ok
[INFO] [stdout] test executor::tests::test_default_parallelism ... ok
[INFO] [stdout] test executor::tests::test_executor_empty ... ok
[INFO] [stdout] test import_scanner::tests::test_extract_package_name_scoped ... ok
[INFO] [stdout] test import_scanner::tests::test_extract_package_name_unscoped ... ok
[INFO] [stdout] test commands::policy::tests::test_type_enforcement_passes_with_import ... ok
[INFO] [stdout] test executor::tests::test_task_state ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_real_agiletec_corporate ... ok
[INFO] [stdout] test import_scanner::tests::test_real_agiletec_notification_no_self_ref ... ok
[INFO] [stdout] test import_scanner::tests::test_real_agiletec_pricing_no_self_ref ... ok
[INFO] [stdout] test import_scanner::tests::test_real_agiletec_ui_has_react_hook_form ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_real_agiletec_voice_gateway ... ok
[INFO] [stdout] test commands::policy::tests::test_type_enforcement_detects_missing_import ... ok
[INFO] [stdout] test executor::tests::test_executor_single_task ... ok
[INFO] [stdout] test executor::tests::test_executor_with_dependencies ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_reexports ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_jsdoc_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_inline_block_comment_on_same_line ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_multiline_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_subpath_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_jsdoc_continuation_lines ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_mixed_quotes ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_standard_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_line_comments ... ok
[INFO] [stdout] test import_scanner::tests::test_scan_dynamic_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_relative_and_alias_imports ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_node_builtins ... ok
[INFO] [stdout] test import_scanner::tests::test_skip_block_comments ... ok
[INFO] [stdout] test manifest::tests::runtimes_section_alias_remains_backward_compatible ... ok
[INFO] [stdout] test manifest::tests::runtimes_section_parses_detailed_form ... ok
[INFO] [stdout] test manifest::tests::test_resolve_deploy_defaults_from_framework ... ok
[INFO] [stdout] test manifest::tests::runtimes_section_parses_short_form ... ok
[INFO] [stdout] test manifest::tests::test_policy_security_invalid_glob_rejected ... ok
[INFO] [stdout] test manifest::tests::test_policy_section_defaults_when_absent ... ok
[INFO] [stdout] test manifest::tests::runtimes_section_defaults_to_empty ... ok
[INFO] [stdout] test manifest::tests::test_policy_security_config ... ok
[INFO] [stdout] test manifest::tests::test_resolve_port_from_framework ... ok
[INFO] [stdout] test manifest::tests::test_resolve_deploy_explicit_not_overridden ... ok
[INFO] [stdout] test manifest::tests::runtimes_section_round_trips_through_toml ... ok
[INFO] [stdout] test manifest::tests::test_resolve_name_from_path ... ok
[INFO] [stdout] test manifest::tests::test_policy_testing_takes_precedence_over_testing ... ok
[INFO] [stdout] test manifest::tests::test_resolve_scope_not_overridden ... ok
[INFO] [stdout] test manifest::tests::test_policy_testing_full_config ... ok
[INFO] [stdout] test manifest::tests::test_resolve_scope_from_workspace ... ok
[INFO] [stdout] test manifest::tests::test_root_section_absent_defaults_to_none ... ok
[INFO] [stdout] test manifest::tests::test_root_section_parses_scripts ... ok
[INFO] [stdout] test manifest::tests::test_testing_invalid_required_imports_regex_rejected ... ok
[INFO] [stdout] test manifest::tests::test_root_section_parses_dependencies ... ok
[INFO] [stdout] test manifest::tests::test_testing_invalid_regex_rejected ... ok
[INFO] [stdout] test manifest::tests::test_root_section_full_config ... ok
[INFO] [stdout] test manifest::tests::test_testing_fallback_to_policy_testing ... ok
[INFO] [stdout] test manifest::tests::test_root_section_parses_dev_dependencies ... ok
[INFO] [stdout] test manifest::tests::test_testing_section_defaults_when_absent ... ok
[INFO] [stdout] test manifest::tests::test_testing_section_mock_policy_allowed ... ok
[INFO] [stdout] test manifest::tests::test_root_section_round_trips_through_toml ... ok
[INFO] [stdout] test manifest::tests::test_validate_allows_named_volumes ... ok
[INFO] [stdout] test manifest::tests::test_testing_section_mock_policy_forbidden ... ok
[INFO] [stdout] test manifest::tests::test_validate_dep_group_missing_reference ... ok
[INFO] [stdout] test manifest::tests::test_validate_dev_dep_group_missing_reference ... ok
[INFO] [stdout] test manifest::tests::test_testing_smoke_default_timeout ... ok
[INFO] [stdout] test manifest::tests::test_validate_duplicate_ports ... ok
[INFO] [stdout] test manifest::tests::test_validate_dep_group_valid_reference ... ok
[INFO] [stdout] test manifest::tests::test_validate_env_group_valid_reference ... ok
[INFO] [stdout] test manifest::tests::test_validate_env_group_missing_reference ... ok
[INFO] [stdout] test manifest::tests::test_validate_rejects_workspace_bind_mounts ... ok
[INFO] [stdout] test manifest::tests::test_validate_passes_for_minimal_manifest ... ok
[INFO] [stdout] test manifest::tests::test_validate_env_validation_all_declared ... ok
[INFO] [stdout] test ownership::tests::test_compose_yaml_variants_ownership ... ok
[INFO] [stdout] test ownership::tests::test_default_is_user ... ok
[INFO] [stdout] test ownership::tests::test_tool_owned_files ... ok
[INFO] [stdout] test manifest::tests::test_testing_valid_regex_accepted ... ok
[INFO] [stdout] test manifest::tests::test_validate_no_duplicate_when_ports_differ ... ok
[INFO] [stdout] test ownership::tests::test_user_owned_files ... ok
[INFO] [stdout] test manifest::tests::test_validate_env_validation_orphan ... ok
[INFO] [stdout] test manifest::tests::test_validate_preset_dep_group_missing_reference ... ok
[INFO] [stdout] test pnpm::tests::test_resolve_workspace_link ... ok
[INFO] [stdout] test preset::tests::test_dep_groups_expansion ... ok
[INFO] [stdout] test preset::tests::test_app_overrides_preset ... ok
[INFO] [stdout] test preset::tests::test_missing_dep_group_errors ... ok
[INFO] [stdout] test manifest::tests::test_validate_rejects_service_bind_mounts ... ok
[INFO] [stdout] test preset::tests::test_multiple_presets ... ok
[INFO] [stdout] test preset::tests::test_preset_dep_groups ... ok
[INFO] [stdout] test preset::tests::test_missing_preset_errors ... ok
[INFO] [stdout] test manifest::tests::test_testing_section_full_config ... ok
[INFO] [stdout] test preset::tests::test_resolve_profile_vars ... ok
[INFO] [stdout] test preset::tests::test_resolve_single_preset ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_allows_inside_workspace ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_dry_run ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_clean_artifact_protects_critical ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_respects_user_ownership ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_rejects_outside_workspace ... ok
[INFO] [stdout] test secrets::doppler::tests::name_returns_doppler ... ok
[INFO] [stdout] test secrets::doppler::tests::wrap_command_passes_args_as_list_not_shell_string ... ok
[INFO] [stdout] test manifest::tests::test_validate_skip_none_ports ... ok
[INFO] [stdout] test secrets::doppler::tests::wrap_command_with_no_extra_args ... ok
[INFO] [stdout] test secrets::doppler::tests::wrap_command_structure_is_correct ... ok
[INFO] [stdout] test secrets::doppler::tests::project_and_config_values_are_preserved ... ok
[INFO] [stdout] test secrets::doppler::tests::wrap_command_uses_doppler_as_program ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_clean_artifact_allows_build_dirs ... ok
[INFO] [stdout] test secrets::tests::create_provider_doppler_missing_section_returns_error ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_clean_artifact_allows_node_modules_in_protected_paths ... ok
[INFO] [stdout] test secrets::tests::create_provider_doppler_returns_doppler ... ok
[INFO] [stdout] test secrets::tests::create_provider_unknown_returns_error ... ok
[INFO] [stdout] test safe_fs::tests::test_safefs_write_creates_backup ... ok
[INFO] [stdout] test templates::tests::test_profile_effective_role ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_root_scripts_appear_in_output ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_root_dev_deps_appear_in_output ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_root_deps_use_catalog_when_in_catalog ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_no_root_section_preserves_packages_root ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_root_overrides_packages_root_scripts ... ok
[INFO] [stdout] test version_resolver::tests::test_resolve_version_passthrough ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_root_overrides_packages_root_dev_deps ... ok
[INFO] [stdout] test workspace::tests::cargo_without_workspace_section_is_skipped ... ok
[INFO] [stdout] test workspace::tests::cargo_workspace_members_are_read_when_pnpm_absent ... ok
[INFO] [stdout] test templates::tests::test_render_package_json_agiletec_like_root_section ... ok
[INFO] [stdout] test workspace::tests::empty_when_nothing_declared ... ok
[INFO] [stdout] test templates::tests::test_glob_expansion_skips_exclude_patterns ... ok
[INFO] [stdout] test workspace::tests::pnpm_workspace_yaml_is_read_when_manifest_empty ... ok
[INFO] [stdout] test workspace::tests::pnpm_takes_precedence_over_cargo ... ok
[INFO] [stdout] test templates::tests::test_glob_expansion_adds_products_workspaces ... ok
[INFO] [stdout] test workspace::tests::manifest_workspaces_take_precedence ... ok
[INFO] [stdout] test workspace::tests::single_project_root_detection ... ok
[INFO] [stdout] test channel::tests::test_fetch_image_digest_nonexistent ... ok
[INFO] [stdout] test channel::tests::test_resolve_lts ... ok
[INFO] [stdout] test channel::tests::test_resolve_edge ... ok
[INFO] [stdout] test channel::tests::test_resolve_channel_returns_digest_when_available ... ok
[INFO] [stdout] test channel::tests::test_resolve_bun ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 262 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/airis_workspace-6afee92f91e3adf2)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_test.rs (/opt/rustwide/target/debug/deps/cli_test-ed72f38c4f1efec8)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test test_help_flag ... ok
[INFO] [stdout] test test_policy_help ... ok
[INFO] [stdout] test test_version_flag ... ok
[INFO] [stdout] test test_policy_check_no_config ... ok
[INFO] [stdout] test test_clean_dry_run ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests airis_workspace
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/channel.rs - channel (line 8) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.16s; merged doctests compilation took 0.15s
[INFO] running `Command { std: "docker" "inspect" "b48c6a7d371e7ffa67a14e66da56246c82f8df9a28990a10e6f84695518d722a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b48c6a7d371e7ffa67a14e66da56246c82f8df9a28990a10e6f84695518d722a", kill_on_drop: false }`
[INFO] [stdout] b48c6a7d371e7ffa67a14e66da56246c82f8df9a28990a10e6f84695518d722a
